package com.zeng.springbootmultiprofiletest.springbootmultiprofiletest.web;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zeng.springbootmultiprofiletest.springbootmultiprofiletest.config.ConfigTest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author zeng
 * @version 1.0.0
 * @date 2020-10-18
 */
@RestController
public class HelloController {

    @Resource
    private ConfigTest configTest;
    @Resource
    private ObjectMapper objectMapper;

    /**
     * 测试SpringBoot激活多个profile，各个profile配置的属性是否生效。测试结果是SpringBoot的配置非常智能，
     * 会根据激活的不同profile，把属性配置到配置类里，没有配置的属性就置null。根据激活profile的名字，后面的配置
     * 会覆盖前面的，如--spring.profiles.active=dev,prod，则prod的属性会覆盖dev的。
     * <pre>
     * 1. 命令行启动，并激活多个profile：java -jar springboot-multi-profile-test-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev,prod
     * 2. IDEA 运行，配置Active Profiles为dev,prod
     * </pre>
     *
     * @return json string of config props
     * @throws JsonProcessingException js ex
     */
    @GetMapping("/multiProfilesActiveTest")
    public String multiProfilesActiveTest() throws JsonProcessingException {
        return objectMapper.writeValueAsString(configTest);
    }
}
